﻿using SqlSugar;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using 凯蒽斯.Dto;

namespace 凯蒽斯.Help
{
    public class SqlHelp
    {
        // SqlSugar客户端实例（单例模式，避免重复创建连接）
        public static SqlSugarClient Db { get; private set; }

        // 数据库文件路径（第一次运行时会自动创建此文件）
        private static string _dbPath;

        /// <summary>
        /// 初始化数据库（第一次运行时生成数据库和表）
        /// </summary>
        public static void Init()
        {
            // 数据库文件路径：程序运行目录下的 "app.db"
            _dbPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "app.db");

            // 初始化SqlSugar客户端
            Db = new SqlSugarClient(new ConnectionConfig
            {
                ConnectionString = $"Data Source={_dbPath}", // SQLite连接字符串
                DbType = DbType.Sqlite, // 数据库类型：SQLite
                IsAutoCloseConnection = true, // 自动关闭连接
                InitKeyType = InitKeyType.Attribute // 通过特性识别主键/自增
            });

            // 第一次运行时生成表（如果表不存在）
            // CodeFirst：根据实体类创建表，已存在的表不会重复创建
            Db.CodeFirst.InitTables(typeof(User), typeof(Config),typeof(AlarmRecord),typeof(ModbusSetting)); // 传入所有实体类型

            // 可选：添加日志输出（调试用）
            Db.Aop.OnLogExecuting = (sql, pars) =>
            {
                Console.WriteLine($"SQL执行：{sql}");
            };
        }

        // 以下是示例CRUD方法（根据业务需求扩展）
        /// <summary>
        /// 添加用户
        /// </summary>
        public static bool AddUser(User user)
        {
            return Db.Insertable(user).ExecuteCommand() > 0;
        }

        /// <summary>
        /// 获取所有用户
        /// </summary>
        public static List<User> GetAllUsers()
        {
            return Db.Queryable<User>().ToList();
        }
    }
}
